<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json的遍历</title>
</head>
<body>

<script>

    //json 的遍历
    // 定义一个json数组
    let stus = [
        {id:1,name: '小美', age: 20, school: '广科'},
        {id:2,name: '小刘', age: 19, school: '东莞理工'},
    ]

    //01 for
    for (let i = 0; i < stus.length; i++) {
        console.log(stus[i].name)
    }

    //02 for ...of
    for (const stu of stus) {  //这个是 stu 是 json 数组中每个元素对象
        console.log(stu.name)
    }

    //03  for...in    stuIndex是 数组的下标 从0开始
    for (const stuIndex in stus) {
        console.log(stus[stuIndex].name)
    }

    //04 forEach 中的 s是中对象
    stus.forEach(s=>{   // foreach 箭头函数 和 java 中 java8 中的 lambada表达式类似
        console.log(s.name)
    })


    console.log("=======================")

    //需求: 拿到 学生中的所有的名字

    let names =[];

    //方式1
    stus.forEach(s=>{
        //拿到每个 学生的名字 添加到数组中
        names.push(s.name)
    })

    //方式2   map函数   可以对数组中的每个元素进行映射map 返回这个映射结果的集
    //map 返回的是 name的集合
    let names2 = stus.map(s=>s.name);
    console.log(names2)

    //java 中的 stream 流 (对集合数据的操作 是抽象的概念 )也可以这么操作
    //01  获取流         collection 接口 都可以 通过方法 stream() 获取流
    //02  中间操作       过滤、映射(map)、截取、排序
    //03  终止操作       数据的收集

</script>

</body>
</html>